package com.im.service.utils;

import com.alibaba.fastjson.JSON;
import com.im.common.constant.Constants;
import lombok.extern.slf4j.Slf4j;
import org.I0Itec.zkclient.ZkClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;

/**
 * 封装了 ZooKeeper 的客户端操作类
 */
@Slf4j
@Component
public class ZKit {

    @Autowired
    private ZkClient zkClient;

    /**
     * 从zookeeper获取获取所有TCP节点
     *
     * @return TCP节点列表
     */
    public List<String> getAllTcpNode() {
        // 使用ZkClient获取所有TCP节点的子节点
        List<String> children = zkClient.getChildren(Constants.ImCoreZkRoot + Constants.ImCoreZkRootTcp);
        // 记录查询成功的日志
        log.info("Query all node =[{}] success.", JSON.toJSONString(children));
        // 返回子节点列表
        return children;
    }

    /**
     * 从zookeeper获取获取所有Web节点
     *
     * @return Web节点列表
     */
    public List<String> getAllWebNode() {
        // 使用ZkClient获取所有Web节点的子节点
        List<String> children = zkClient.getChildren(Constants.ImCoreZkRoot + Constants.ImCoreZkRootWeb);
        // 记录查询成功的日志
        log.info("Query all node =[{}] success.", JSON.toJSONString(children));
        // 返回子节点列表
        return children;
    }
}
